package com.smsc.headend.task.engine.facade;

import cn.hutool.core.convert.Convert;
import cn.hutool.core.map.MapUtil;
import cn.hutool.json.JSONUtil;
import com.smsc.headend.common.constant.CacheNameConstant;
import com.smsc.headend.common.constant.DeviceModel;
import com.smsc.headend.module.asset.entity.ComEntity;
import com.smsc.headend.module.asset.entity.Meter;
import com.smsc.headend.module.common.entity.DeviceOperation;
import com.smsc.headend.module.data.dto.DLMSSubDataItemDTO;
import com.smsc.headend.module.data.dto.DataItemDTO;
import com.smsc.headend.module.data.enums.OperationGroup;
import com.smsc.headend.module.data.enums.OperationName;
import com.smsc.headend.module.data.query.ModelDataItemQueryItem;
import com.smsc.headend.module.fwu.entity.TemplateFwUpgrade;
import com.smsc.headend.module.task.dto.AtomicTask;
import com.smsc.headend.module.task.enums.DeviceActionType;
import com.smsc.headend.task.engine.service.FeignAssetManagementService;
import lombok.extern.slf4j.Slf4j;
import org.assertj.core.util.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.stereotype.Component;

import java.util.*;

import static com.smsc.headend.module.data.enums.OperationName.*;

@CacheConfig(cacheNames = "ute-data-item")
public interface DataItemFacade {
    String DATA_ITEM_ID = "dataItemId";
    String DATA_ITEM_ID_LIST = "dataItemIdList";
    String ATOMIC_TASK = "atomicTask";
    String SUB_DATA_ITEM_ID = "subDataItemId";


    List<DataItemDTO> getDataItemsByOperation(Meter meter, ComEntity terminal, DeviceOperation dictionary, Map<String, Object> parameterMap, Long modelId);

    List<DataItemDTO> getModelDataItemCosems(Long modelId, List<Long> dataItemIds, DeviceActionType deviceActionType);

    List<DataItemDTO> getDataItemsById(Long modelId, DeviceActionType get, Long subDataItemId);
}

